package com.campus.app.service;

import com.campus.commons.entity.Annunciate;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.utils.MyPage;
import com.campus.commons.utils.Result;

import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.Null;
import java.util.List;

/**
 * <p>
 * 公告 服务类
 * </p>
 *
 * @author Rin
 * @since 2020-12-24
 */
public interface AnnunciatesService extends IService<Annunciate> {



    /**
     * 显示所有通告，
     * @param myPage 分页条件；
     * @param filter 是否过滤非启动的通告；管理页面不过滤；展示页面需要过滤
     * @return
     */
    Result<List<Annunciate>> getAllAnnunciates(  MyPage myPage,boolean filter);

    /**  根据类型显示公告
     * @param myPage 分页要求
     *  多条件查询： 可以过滤的有类型，annTypeId, state 公告状态 0启动 1不启动；
     *
     * @return
     * */
    Result<List<Annunciate>> getAnnunciates( MyPage<Annunciate> myPage);

    /**'
     * 添加公告
     * @param annunciate
     * @return
     */
    Result addAnnunciate(@Valid Annunciate annunciate);

    /**
     * 更新公告
     * @param annunciate
     * @return
     */
    Result upAnnunciate(@Valid Annunciate annunciate);
    /**
     * 根据Id 删除一条公告信息
     * @param id
     * @return
     */
    Result deleteAnnunciateById(@Min(1) Integer id);

    /**
     * 删除公告，根据类型删除，如： 全校公告，系统公告，班级公告
     * @param Types
     * @return
     */
    Result deleteAnnunciateByType(Integer Types);


    /**
     * 置顶公告 ：   目前设计 只能看； 用户不能修改；删除；操作；
     * @param id
     * @return
     */
    Result stickAnnunciate(@Min(1)Integer id);
}
